package com.blq.api.mapper;

import com.alibaba.fastjson.JSONObject;
import com.blq.common.core.domain.entity.SysUser;
import com.blq.web.CustomerRepair.domain.CustomerRepair;
import com.blq.web.PayoutInformation.domain.MaterialInfo;
import com.blq.web.customerMode.entiy.Evaluation;
import com.blq.web.customerMode.entiy.Ticket;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;

import java.util.List;

/**
 * App Mapper
 *
 * @author: Blq <br>
 */
public interface AppMapper {



    /**
     * @Description: 查询用户信息
     * @Author: Blq <br>
     * @Date: 2022/8/26 0026 13:39
     * @Param: userName
     * @Return: com.alibaba.fastjson.JSONObject
     **/
    JSONObject getUserInfoByUserName(@Param("userName") String userName);

    /**
     * @Description: 新增订单
     * @Author: Blq <br>
     * @Date: 2022/8/30 0030 8:58
     * @Param: jsonObject
     * @Return: int
     **/
    int addCustomerRepair(CustomerRepair jsonObject);

    /**
     * @Description 获取我发布的订单
     * @Author Blq <Br />
     * @Date 8:37 2022/9/1
     * @Param jsonObject
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<JSONObject> getMyCustomerRepair(JSONObject jsonObject);

    /**
     * @Description 获取用户信息
     * @Author Blq <Br />
     * @Date 8:45 2022/9/5
     * @Param id
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject getUserIndoById(@Param("id") String id);

    /**
     * @Description 更新用户信息
     * @Author Blq <Br />
     * @Date 9:01 2022/9/5
     * @Param jsonObject
     * @Return int
     **/
    int updateUser(JSONObject jsonObject);

    /**
     * @Description 获取我得工单
     * @Author Blq <Br />
     * @Date 8:58 2022/9/6
     * @Param jsonObject
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<JSONObject> getAllTickets(JSONObject jsonObject);

    /**
     * @Description 获取我得工单
     * @Author Blq <Br />
     * @Date 8:58 2022/9/6
     * @Param jsonObject
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<JSONObject> getTickets(JSONObject jsonObject);

    /**
     * @Description 获取我得工单
     * @Author Blq <Br />
     * @Date 8:58 2022/9/6
     * @Param jsonObject
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<JSONObject> getTicketsById(JSONObject jsonObject);

    /**
     * @Description 获取我得工单
     * @Author Blq <Br />
     * @Date 8:58 2022/9/6
     * @Param jsonObject
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<JSONObject> getTicketsByFlag(JSONObject jsonObject);

    /**
     * @Description 工单池
     * @Author Blq <Br />
     * @Date 9:44 2022/9/6
     * @Param jsonObject
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<JSONObject> ticketsPool(@Param("loginId") String loginId ,@Param("along") Long along);
    JSONObject ticketsPoolOrderId(@Param("customer_key") String customer_key);

    /**
     * @Description 新增系统成员
     * @Author Blq <Br />
     * @Date 10:13 2022/9/6
     * @Param jsonObject
     * @Return int
     **/
    int addSystem(JSONObject jsonObject);

    /**
     * @Description 获取全部部门
     * @Author Blq <Br />
     * @Date 10:56 2022/9/6
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<JSONObject> getAllDepts(JSONObject jsonObject);

    /**
     * @Description 获取部门下人员
     * @Author Blq <Br />
     * @Date 11:04 2022/9/6
     * @Param jsonObject
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<SysUser> getDeptsUser(String collect);

    /**
     * @Description 新增工单提交审核
     * @Author Blq <Br />
     * @Date 8:43 2022/9/7
     * @Param jsonObject
     * @Return int
     **/
    int addTicketReview(JSONObject jsonObject);

    /**
     * @Description 获取部门管理人员
     * @Author Blq <Br />
     * @Date 8:49 2022/9/7
     * @Param jsonObject
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject getDeptAdmin(@Param("id") String id);

    /**
     * @Description 查看工单信息
     * @Author Blq <Br />
     * @Date 9:15 2022/9/7
     * @Param id
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject getTicketInfo(@Param("id") String id);


    /**
     * @Description 查询工单下审核条数
     * @Author Blq <Br />
     * @Date 9:23 2022/9/7
     * @Param jsonObject
     * @Return int
     **/
    int selectTicketsCount(JSONObject jsonObject);

    /**
     * @Description 查询工单下的审核信息
     * @Author Blq <Br />
     * @Date 9:28 2022/9/7
     * @Param id
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject selectTickets(@Param("id") String id);
    JSONObject selectTickets2(@Param("id") String id);

    /**
     * @Description 查询需要我审核的订单
     * @Author Blq <Br />
     * @Date 10:19 2022/9/7
     * @Param jsonObject
     * @Return int
     **/
    List<JSONObject> approveTickets(JSONObject jsonObject);

    /**
     * @Description 获取工单详情根据ID
     * @Author Blq <Br />
     * @Date 10:29 2022/9/7
     * @Param id
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject getTicketById(@Param("id") String id);



    /**
     * @Description 获取工单下上传的勘探材料
     * @Author Blq <Br />
     * @Date 8:50 2022/9/8
     * @Param jsonObject
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject getInvestigationMessage(@Param("id") String id);

    /**
     * @Description 新增勘探信息
     * @Author Blq <Br />
     * @Date 8:58 2022/9/8
     * @Param jsonObject
     * @Return int
     **/
    int addInvestigation(JSONObject jsonObject);



    /**
     * @Description 获取项目下报价信息
     * @Author Blq <Br />
     * @Date 10:17 2022/9/8
     * @Param id
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject getAuotation(@Param("id") String id);

    /**
     * @Description 获取收款信息
     * @Author Blq <Br />
     * @Date 9:43 2022/9/13
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject getPayOutInfo();

    /**
     * @Description 新增资料信息
     * @Author Blq <Br />
     * @Date 9:13 2022/9/14
     * @Param jsonObject
     * @Return int
     **/
    int addMaterials(JSONObject jsonObject);

    /**
     * @Description 查询工单下材料信息
     * @Author Blq <Br />
     * @Date 9:22 2022/9/14
     * @Param id
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject selectMaterials(@Param("id") String id);

    /**
     * @Description 新增评价信息
     * @Author Blq <Br />
     * @Date 9:40 2022/9/14
     * @Param jsonObject
     * @Return int
     **/
    int addEvaluation(JSONObject jsonObject);
    //更改评价信息
    int updEvaluation(Evaluation evaluation);

    /**
     * @Description 获取待勘察订单
     * @Author Blq <Br />
     * @Date 9:52 2022/10/8
     * @Param jsonObject
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<JSONObject> getUserCustomer(JSONObject jsonObject);

    /**
     * @Description 获取后台用户
     * @Author Blq <Br />
     * @Date 14:01 2022/10/8
     * @Param phone
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject getSysUser(@Param("phone") String phone);

    /**
     * @Description 更新系统用户
     * @Author Blq <Br />
     * @Date 14:05 2022/10/8
     * @Param jsonObject
     * @Return int
     **/
    int updateSysUser(JSONObject jsonObject);

    /**
     * @Description 查询全部公司
     * @Author Blq <Br />
     * @Date 14:25 2022/10/14
     * @Return java.util.List<com.alibaba.fastjson.JSONObject>
     **/
    List<JSONObject> firm(JSONObject jsonObject);

    /**
     * @Description 根据ID获取详情信息
     * @Author Blq <Br />
     * @Date 15:00 2022/10/14
     * @Param id
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject getUserSysById(@Param("id") String id);

    /**
     * @Description 获取系统用户信息
     * @Author Blq <Br />
     * @Date 15:26 2022/10/17
     * @Param id
     * @Return com.alibaba.fastjson.JSONObject
     **/
    JSONObject userInfoSys(@Param("id") String id);

    /**
     * @description: 获取业务分类
     * @author: Bu Ling Qiang
     * @date: 2022/11/7 11:17
     * @param:
     * @return: java.util.List<com.alibaba.fastjson.JSONObject>
     */
    List<JSONObject> serveClassify();

    /**
     * 根据师傅订单id查询待处理订单
     * @param orderId
     * @return
     */
    JSONObject selectPending(@Param("id") String orderId);
    /**
     * @Description 接口描述 : 根据订单号去查找报价信息是否存在
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2022/12/26 16:14
     */
    JSONObject seleceCountQuotationSchemeByQuotationKey(@Param("quotationRepair")String quotationRepair);
    /**
     * @Description 接口描述 :  根据订单去查询施工材料是否已经长传过了
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2022/12/26 17:21
     */
    JSONObject selectCountMaterialInfo(@Param("materialRepari")String materialRepari);
    /**
     * @Description 接口描述 : 客户签单接口
     * @Params * @param quotation_scmor合同/quotation_price价格
     * @Return
     * @Author xiaw
     * @Date 2023/1/2 17:41
     */
    void updateByQuotationRepair(@Param("quotationRepair") String quotationRepair, @Param("quotationPrice")String quotationPrice, @Param("quotationScmor")String quotationScmor);
    void updateByQuotationRepair2(JSONObject jsonObject);

    /**
     * @Description 接口描述 : 非报修上传施工材料
     * @Params  * @param null
     * @Return
     * @Author xiaw
     * @Date 2023/1/2 18:43
     */
    void addMaterialsFalse(@Param("materialRepari")String materialRepari,@Param("materialIllustrate") String materialIllustrate,@Param("materialAfter") String materialAfter);

    JSONObject selectCustomerKey(@Param("ticketKey")String ticketKey,
                                 @Param("aLong")String aLong);
    //根据工单id修改审核表信息
    void updaTeticketByOrderId(Ticket ticket1);
    //根据工单号修改materialInfo1
    void updateMaterialInfoByOrderId(MaterialInfo materialInfo1);
}
